import string
import copy
import scipy
import Tkinter, tkFileDialog
import numpy as np
import pandas as pd
from scipy.spatial.distance import cdist
import matplotlib.pyplot as plt
import os
import sys
import cPickle
import scipy.io as sio
import matplotlib.units
sys.path.append(os.path.abspath("C:\Users\Scherer Lab E\Documents\GitHub\Python_Data_Analysis"))
import common_functions as cf
import half_nanoplate_functions as hnf
import matplotlib_helper_functions as mplhf
%matplotlib inline
os.chdir("C:\Users\Scherer Lab E\Box Sync\Passing\Figures and Data\Data")
#matplotlib.rcParams['font.family'] = 'Vera'
matplotlib.rcParams['figure.dpi'] = 200.0
#matplotlib.rcParams['axes.labelsize'] = 15
#matplotlib.rcParams['axes.titlesize'] = 18
#matplotlib.rcParams['xtick.labelsize'] = 'large'
#matplotlib.rcParams['ytick.labelsize'] = 'large'
matplotlib.rcParams['mathtext.fontset'] = 'dejavusans'
matplotlib.rcParams['font.family'] = 'sans-serif'
matplotlib.rcParams['font.sans-serif'] = 'stixsans'
matplotlib.rcParams['legend.handletextpad'] = -0.5
matplotlib.rcParams['legend.numpoints'] = 1
matplotlib.rcParams['legend.scatterpoints'] = 1
matplotlib.rcParams['legend.borderaxespad'] = 0.2
matplotlib.rcParams['legend.fontsize'] = 'small'
matplotlib.rcParams['xtick.labelsize'] = 'small'
matplotlib.rcParams['ytick.labelsize'] = 'small'
matplotlib.rcParams['axes.labelpad'] = 0.5
#matplotlib.rcParams['mathtext.default'] = 'regular'
#matplotlib.rcParams['font.family'] = 'serif'
#matplotlib.rcParams['font.serif'] = 'Times'
#matplotlib.rcParams['text.usetex'] = True
#matplotlib.rcParams['text.latex.unicode'] = True
#matplotlib.rc('text.latex', preamble=r'\usepackage{cmbright}')
matplotlib.rc('text.latex', preamble=[r'\usepackage{DejaVuSans}',
r'\renewcommand*\familydefault{\sfdefault}',
r'\usepackage[T1]{fontenc}',
r'\usepackage{amsmath}'])
# For Matplotlib 2.0
matplotlib.rcParams['xtick.direction'] = 'in'
matplotlib.rcParams['ytick.direction'] = 'in'
matplotlib.rcParams['xtick.top'] = True
matplotlib.rcParams['ytick.right'] = True
# Get DataFrame that corresponds to image
store = pd.HDFStore("K:\Pat's_Projects\ParticleTrajectoryData\passing_event_data_trackpy_refined.h5", mode='r')
df = store.get("Exp06031401/Mov_06031432")
store.close()
def add_four_polar_coords(ax, size=None):
"""A helper function that adds 0pi, pi/2, pi, and 3pi/2 axis labels
on the inside of an axis following the unit circle.
:param ax: A mpl.axes object you want to add polar labels to
"""
if size == None:
size = 'large'
# Add the polar labels
ax.text(0.955, 0.5, '$\mathbf{\mathregular{0}}$', fontdict=dict(color='white', size=size),
weight='extra bold', transform=ax.transAxes, va='center', ha='right')
ax.text(0.5, 0.97, '$\mathbf{\pi/\mathregular{2}}$', fontdict=dict(color='white', size=size),
weight='extra bold', transform=ax.transAxes, va='top', ha='center')
ax.text(0.045, 0.5, '$\mathbf{\pi}$', fontdict=dict(color='white', size=size),
weight='extra bold', transform=ax.transAxes, va='center', ha='left')
ax.text(0.5, 0.03, '$\mathbf{\mathregular{3}\pi/\mathregular{2}}$', fontdict=dict(color='white', size=size),
weight='extra bold', transform=ax.transAxes, va='bottom', ha='center')
# Change ticks in graph
xticklines = ax.get_xticklines()
yticklines = ax.get_yticklines()
xcenter = len(xticklines)/2
ycenter = len(yticklines)/2
xticklines[xcenter].set(color='white', markeredgewidth=2, markersize=5, zorder=0)
xticklines[xcenter-1].set(color='white', markeredgewidth=2, markersize=5)
yticklines[ycenter].set(color='white', markeredgewidth=2, markersize=5)
yticklines[ycenter-1].set(color='white', markeredgewidth=2, markersize=5)
def high_res_points(x, y, factor=10):
new_x = []
new_y = []
for i in range(len(x)-1):
m = (y[i+1] - y[i]) / (x[i+1] - x[i])
b = y[i] - m*x[i]
calc_x = np.linspace(x[i], x[i+1], factor)
new_x += list(calc_x[:-1])
new_y += list(calc_x[:-1]*m + b)
last_x = x[i+1]
last_y = y[i+1]
new_x.append(last_x)
new_y.append(last_y)
return np.asarray(new_x), np.asarray(new_y)
import matplotlib.gridspec as gridspec
img = plt.imread("../particle pass example Mov_06031432_frame_2911_8_bit.tif")
experiment_info = plt.figure(figsize=(4, 2.4))
gs1 = gridspec.GridSpec(1,1)
gs1.update(left=0, right=.64, wspace=0, hspace=0)
# Plot full frame
ax1 = plt.subplot(gs1[0])
df_no_dupes = df.drop_duplicates(['frame', 'track id'])
x_cent, y_cent, r_mean = cf.least_sq_fit_circle(df_no_dupes)
plt.imshow(img, cmap='gray', vmin=56, vmax=192)
plt.axis('off')
theta_range = np.linspace(0, 2*np.pi, 1000)
df_frame = df_no_dupes[df_no_dupes.frame==2911]
df_frame = cf.y_axis_flip(df_frame, 240)
df_frame['theta'] = (df_frame['theta'] + 90)%360
part_1 = df_frame.iloc[-1]
part_2 = df_frame.iloc[-2]
part_3 = df_frame.iloc[-3]
def calc_final_pos_arc(start_deg, deg_shift, x_cent, y_cent, r_mean):
final_deg = (start_deg + deg_shift)%360
final_deg = final_deg*np.pi/180.0
y_final = -r_mean*np.sin(final_deg) + y_cent
x_final = r_mean*np.cos(final_deg) + x_cent
return (x_final, y_final)
# ax1.annotate('', xy=calc_final_pos_arc(part_1.theta, 50, x_cent, 240 - y_cent, part_1.r), xycoords='data',
# xytext=calc_final_pos_arc(part_1.theta, 3.5, x_cent, 240 - y_cent, part_1.r),
# textcoords='data', arrowprops=dict(arrowstyle='simple,tail_width=0.25,head_width=0.7', connectionstyle="arc3,rad=0.2", facecolor='#FFDB00', edgecolor='#FFDB00'))
ax1.annotate('', xy=calc_final_pos_arc(part_2.theta, 50, x_cent, 240 - y_cent, part_2.r), xycoords='data',
xytext=calc_final_pos_arc(part_2.theta, 3.5, x_cent, 240 - y_cent, part_2.r),
textcoords='data', arrowprops=dict(arrowstyle='simple,tail_width=0.25,head_width=0.7', connectionstyle="arc3,rad=0.2", facecolor='#FFDB00', edgecolor='#FFDB00'))
ax1.annotate('', xy=calc_final_pos_arc(part_3.theta, 50, x_cent, 240 - y_cent, part_3.r), xycoords='data',
xytext=calc_final_pos_arc(part_3.theta, 3.5, x_cent, 240 - y_cent, part_3.r),
textcoords='data', arrowprops=dict(arrowstyle='simple,tail_width=0.25,head_width=0.7', connectionstyle="arc3,rad=0.2", facecolor='#FFDB00', edgecolor='#FFDB00'))
# Plot close-up and trajs
gs2 = gridspec.GridSpec(1,1)
gs2.update(left=0.64, right=1, bottom=0.6, top=1)
ax2 = plt.subplot(gs2[0])
plt.imshow(img, cmap='gray', vmin=56, vmax=192)
print df_no_dupes.query('frame == 2911')
track_1 = df_no_dupes[df_no_dupes['track id']==1]
track_2 = df_no_dupes[df_no_dupes['track id']==3]
track_1 = cf.y_axis_flip(track_1, 240)
track_2 = cf.y_axis_flip(track_2, 240)
track_1 = track_1.query('2911 <= frame < 2921')
track_2 = track_2.query('2911 <= frame < 2921')
# plt.plot(track_1['x pos'], track_1['y pos'])
# plt.plot(track_2['x pos'], track_2['y pos'])
# Plot track_1 traj
# get higher resolution data
xHiRes,yHiRes = high_res_points(track_1['x pos'].values,track_1['y pos'].values,20)
npointsHiRes = len(xHiRes)
cm = plt.get_cmap('autumn')
ax2.set_color_cycle([cm(1.*i/(npointsHiRes-1))
for i in range(npointsHiRes-1)])
for i in range(npointsHiRes-1):
ax2.plot(xHiRes[i:i+2],yHiRes[i:i+2])
# Plot track_2 traj
# get higher resolution data
xHiRes,yHiRes = high_res_points(track_2['x pos'].values,track_2['y pos'].values,20)
npointsHiRes = len(xHiRes)
cm = plt.get_cmap('cool')
ax2.set_color_cycle([cm(1.*i/(npointsHiRes-1))
for i in range(npointsHiRes-1)])
for i in range(npointsHiRes-1):
ax2.plot(xHiRes[i:i+2],yHiRes[i:i+2])
#print track_2
plt.axis('off')
plt.ylim(205, 165)
plt.xlim(140, 190)
ax2.text(145, 190, '2', color='white')
ax2.text(160, 178, '1', color='white')
# Plot del_r del_theta traj
gs3 = gridspec.GridSpec(1,1)
gs3.update(left=0.65, right=1, bottom=0, top=0.6)
ax3 = plt.subplot(gs3[0])
# Convert track_2 del_r and del_theta units
track_2['del_r'] = track_2['del_r']*6.5/60/2
track_2['del_theta'] = track_2['del_theta']*np.pi/180
# get higher resolution data
xHiRes,yHiRes = high_res_points(track_2['del_theta'].values,track_2['del_r'].values,20)
npointsHiRes = len(xHiRes)
cm = plt.get_cmap('autumn')
# ax3.set_color_cycle([cm(1.*i/(npointsHiRes-1))
# for i in range(npointsHiRes-1)])
# for i in range(npointsHiRes-1):
# ax3.plot(xHiRes[i:i+2],yHiRes[i:i+2])
ax3.plot(track_2.del_theta, track_2.del_r, 'C0')
ax3.plot(track_2.del_theta.iloc[0], track_2.del_r.iloc[0], 'C0o')
ax3.plot(track_2.del_theta.iloc[-1], track_2.del_r.iloc[-1], 'C0o')
ax3.text(-0.23, 0.1, '$t_0$')
ax3.text(0.18, 0.26, '$t_1$')
plt.xlabel(r'$\Delta \theta$ (radians)')
plt.ylabel(r'$\Delta$r ($\mathregular{\mu}$m)')
plt.xlim(-0.25, 0.25)
plt.ylim(-1.2, 1.2)
plt.xticks([-0.2, 0, 0.2])
mplhf.add_axes_label_inches(ax1, (0.068,0.065), 'a', color='white', fontsize=10)
mplhf.add_axes_label_inches(ax2, (0.068,0.065), 'b', color='white', fontsize=10)
mplhf.add_axes_label_inches(ax3, (0.068,0.065), 'c', fontsize=10)
ax1.xaxis.set_visible(False)
ax1.yaxis.set_visible(False)
ax2.xaxis.set_visible(False)
ax2.yaxis.set_visible(False)
gs1.tight_layout(experiment_info, pad=0, rect=[0, 0, 0.64, 1])
gs2.tight_layout(experiment_info, pad=0, rect=[0.63, .48, 1, 1])
gs3.tight_layout(experiment_info, pad=0, rect=[0.61, 0, 0.99, 0.47])
save_dir = "C:\Users\Scherer Lab E\Box Sync\Passing\Figures and Data\Figures"
experiment_info.savefig(save_dir+"\Fig_1.png", dpi=600)
save_dir = "C:\Users\Scherer Lab E\Box Sync\Passing\Figures and Data\Figures"
experiment_info.savefig(save_dir+"\Fig_1.pdf", dpi=800)
import cPickle
# From Ana_17051001
f = open("pass_event_r_deviation_closer_vs_further.pkl", "r")
further_del_r, closer_del_r = cPickle.load(f)
f.close()
# From Ana_17051001
f = open("pass_event_r_deviation.pkl", "r")
part_behind_r_dev, part_ahead_r_dev= cPickle.load(f)
f.close()
# From Ana_17050203
f = open("scatter_plots_giant_df.pkl", "r")
giant_df = cPickle.load(f)
f.close()
# From Ana_17053001
f = open("statistical_energy_of_barrier_del_theta_high_and_low_pass.pkl", "r")
high_pass_del_theta, low_pass_del_theta = cPickle.load(f)
f.close()
# # From Ana_17050204
# f = open("pass_event_del_r_theta.pkl", "r")
# all_theta, all_r = cPickle.load(f)
# f.close()
# store = pd.HDFStore("K:\Pat's_Projects\ParticleTrajectoryData\passing_event_data_trackpy_refined_extra.h5", mode='r')
hist_passing = plt.figure(figsize=(3.34646, 3.7))
um_conv = 6.5/60/2
radians_conv = np.pi/180.0
giant_df_finite = giant_df[np.isfinite(giant_df['del_theta'])]
ax1 = plt.subplot(211)
plt.hist(closer_del_r*um_conv, label='Particle closer\n to trap', alpha=0.5, range=[-1.08,1.08], bins=50, normed=True)
plt.hist(further_del_r*um_conv, label='Particle further\n from trap', alpha=0.5, range=[-1.08,1.08], bins=50, normed=True)
plt.ylabel('PD')
plt.xlabel(r'r deviation from trap ($\mathregular{\mu}$m)')
plt.legend(frameon=False, handletextpad=0.5)
ax2 = plt.subplot(212)
plt.hist(part_behind_r_dev*um_conv, label='Trailing\n Particle', alpha=0.5, range=[-1.08,1.08], bins=50, normed=True)
plt.hist(part_ahead_r_dev*um_conv, label='Leading\n Particle', alpha=0.5, range=[-1.08,1.08], bins=50, normed=True)
plt.ylabel('PD')
plt.xlabel(r'r deviation from trap ($\mathregular{\mu}$m)')
plt.legend(frameon=False, handletextpad=0.5)
#plt.hist2d(giant_df_finite['del_theta']*radians_conv, giant_df_finite['del_r']*um_conv, range=[(-10*radians_conv,10*radians_conv),(-25*um_conv, 25*um_conv)], bins=100)
# plt.ylabel(r'$\Delta$r ($\mathregular{\mu}$m)')
# plt.xlabel(r'$\Delta \theta$ (radians)')
# ax3 = plt.subplot(223)
# plt.hist2d(giant_df_finite['theta']*radians_conv, giant_df_finite['del_theta']*radians_conv, range=[(0,2*np.pi),(-5*radians_conv, 5*radians_conv)], bins=100)
# x_label = [r"0", r"$\frac{\pi}{\mathregular{2}}$", r"$\pi$", r"$\frac{\mathregular{3}\pi}{\mathregular{2}}$", r"2$\pi$"]
# plt.xticks(np.array([0,0.5,1,1.5,2])*np.pi,x_label)
# plt.ylabel(r'$\Delta \theta$ (radians)')
# plt.xlabel(r'$\theta$')
mplhf.add_axes_label_inches(ax1, (0.068,0.065), 'a', fontsize=10)
mplhf.add_axes_label_inches(ax2, (0.068,0.065), 'b', fontsize=10)
plt.tight_layout(pad=0.65)
save_dir = "C:\Users\Scherer Lab E\Box Sync\Passing\Figures and Data\Figures"
hist_passing.savefig(save_dir+"\Fig_2.png", dpi=600)
save_dir = "C:\Users\Scherer Lab E\Box Sync\Passing\Figures and Data\Figures"
hist_passing.savefig(save_dir+"\Fig_2.pdf", dpi=800)
# From Ana_17050203
f = open("scatter_plots_giant_df.pkl", "r")
giant_df = cPickle.load(f)
f.close()
# From Ana_17053001
f = open("statistical_energy_of_barrier_del_theta_high_and_low_pass.pkl", "r")
high_pass_del_theta, low_pass_del_theta = cPickle.load(f)
f.close()
store = pd.HDFStore("K:\Pat's_Projects\ParticleTrajectoryData\passing_event_data_trackpy_refined.h5", mode='r')
keys = store.index['key']
for key in keys
store.close()
radians_conv = np.pi/180.0
hist_passing_theta_del_theta = plt.figure(figsize=(3.34646, 3.7))
high_pass_theta_peaks = np.asarray([54, 230])
low_pass_theta_peaks = np.asarray([146, 336])
theta_region_size = 25
print high_pass_theta_peaks, low_pass_theta_peaks
high_pass_theta_peaks = (high_pass_theta_peaks + 90) % 360
low_pass_theta_peaks = (low_pass_theta_peaks + 90) % 360
high_pass_theta_peaks_low_range = (high_pass_theta_peaks - theta_region_size) * radians_conv
high_pass_theta_peaks_high_range = (high_pass_theta_peaks + theta_region_size) * radians_conv
low_pass_theta_peaks_low_range = (low_pass_theta_peaks - theta_region_size) * radians_conv
low_pass_theta_peaks_high_range = (low_pass_theta_peaks + theta_region_size) * radians_conv
# high_pass_theta_peaks_low_range *= radians_conv
# high_pass_theta_peaks_high_range *= radians_conv
# low_pass_theta_peaks_low_range *= radians_conv
# low_pass_theta_peaks_high_range *= radians_conv
um_conv = 6.5/60/2
radians_conv = np.pi/180.0
giant_df_finite = giant_df[np.isfinite(giant_df['del_theta'])]
ax1 = plt.subplot(211)
valid_del_theta = giant_df_finite.query('-2.29 < del_theta < 2.29')
bin_num = hnf.hist_bin_optimization_continuous(valid_del_theta['theta'])
print bin_num
theta_values = (valid_del_theta['theta'] + 90) % 360
plt.hist(theta_values*radians_conv, bins=50, normed=True)
plt.ylabel('PD')
plt.xlabel(r'$\theta$ (radians)')
x_label = [r"0", r"$\pi/\mathregular{4}$", r"$\pi/\mathregular{2}$", r"$3\pi/\mathregular{4}$", r"$\pi$",r"$5\pi/\mathregular{4}$", r"$\mathregular{3}\pi/\mathregular{2}$",r"$7\pi/\mathregular{4}$", r"2$\pi$"]
plt.xticks(np.array([0,0.25, 0.5,0.75, 1,1.25, 1.5,1.75, 2])*np.pi,x_label)
plt.xlim(0, 2*np.pi)
print high_pass_theta_peaks_low_range[0], high_pass_theta_peaks_high_range
ax1.axvspan(high_pass_theta_peaks_low_range[0],high_pass_theta_peaks_high_range[0], color='C3', alpha=0.5, zorder=0)
ax1.axvspan(high_pass_theta_peaks_low_range[1],high_pass_theta_peaks_high_range[1], color='C3', alpha=0.5, zorder=0)
ax1.axvspan(low_pass_theta_peaks_low_range[0],low_pass_theta_peaks_high_range[0], color='C4', alpha=0.5, zorder=0)
ax1.axvspan(low_pass_theta_peaks_low_range[1],low_pass_theta_peaks_high_range[1], color='C4', alpha=0.5, zorder=0)
ax2 = plt.subplot(212)
bin_num = 100
high_pass_pd, high_pass_bins = np.histogram(high_pass_del_theta, bins=bin_num, normed=True)
low_pass_pd, low_pass_bins = np.histogram(low_pass_del_theta, bins=bin_num, normed=True)
high_pass_logpd = -np.log(high_pass_pd)
low_pass_logpd = -np.log(low_pass_pd)
high_pass_bin_midpoints = (high_pass_bins[:-1] + high_pass_bins[1:])/2.0
low_pass_bin_midpoints = (low_pass_bins[:-1] + low_pass_bins[1:])/2.0
arg_min_high_pass = np.argmin(high_pass_logpd)
plt.plot(high_pass_bin_midpoints*radians_conv, high_pass_logpd - high_pass_logpd.min(), 'C3', label='High PD\n of passing')
plt.plot(low_pass_bin_midpoints*radians_conv, low_pass_logpd - low_pass_logpd.min(), 'C4', label='Low PD\n of passing')
plt.ylabel(r'pmf ($\mathregular{k_BT}$)')
plt.xlabel(r'$\Delta \theta$ (radians)')
plt.legend(loc='upper right', fancybox=False, frameon=False, handlelength=1, handletextpad=0.7)
mplhf.add_axes_label_inches(ax1, (0.068,0.065), 'a', fontsize=10)
mplhf.add_axes_label_inches(ax2, (0.068,0.065), 'b', fontsize=10)
plt.tight_layout(pad=0.1, h_pad=0.5)
save_dir = "C:\Users\Scherer Lab E\Box Sync\Passing\Figures and Data\Figures"
hist_passing_theta_del_theta.savefig(save_dir+"\Fig_7.png", dpi=600)
save_dir = "C:\Users\Scherer Lab E\Box Sync\Passing\Figures and Data\Figures"
hist_passing_theta_del_theta.savefig(save_dir+"\Fig_7.pdf", dpi=800)
# # From Ana_17050203
# f = open("scatter_plots_giant_df.pkl", "r")
# giant_df = cPickle.load(f)
# f.close()
# From Ana_17051501
f = open("C:\Users\Scherer Lab E\Box Sync\Passing\Figures and Data\Data\\non_pass_event_del_r_theta.pkl", mode='r')
non_pass_del_r, non_pass_del_theta = cPickle.load(f)
f.close()
# From Ana_17050803
f = open("C:\Users\Scherer Lab E\Box Sync\Passing\Figures and Data\Data\pass_event_mean_path.pkl", mode='r')
path_above, path_below, path_theta, pass_del_theta_pos_neg, pass_del_r_pos_neg = cPickle.load(f)
f.close()
LogNorm()
from matplotlib.colors import LogNorm
del_r_del_theta_fig = plt.figure(figsize=(3.34646, 4.5))
um_conv = 6.5/60/2
radians_conv = np.pi/180.0
ax1 = plt.subplot(211)
prob_density, xedges, yedges, im1 = plt.hist2d(non_pass_del_theta*radians_conv, non_pass_del_r*um_conv, bins=50, norm=LogNorm(), rasterized=True)
cbar = plt.colorbar(im1, ax=ax1)
cbar.set_label('PD')
plt.xlabel(r'$\Delta \theta$ (radians)')
plt.ylabel(r'$\Delta r$ ($\mathregular{\mu}$m)')
ax2 = plt.subplot(212)
path_theta_mid = (path_theta[:-1] + path_theta[1:])/2
prob_density, xedges, yedges, im2 = plt.hist2d(pd.concat(pass_del_theta_pos_neg)*radians_conv, pd.concat(pass_del_r_pos_neg)*um_conv, range=[[-.3491,.3491],[-1.0833,1.0833]], bins=50, norm=LogNorm(), rasterized=True)
cbar = plt.colorbar(im2, ax=ax2)
cbar.set_label('PD')
plt.plot(path_theta_mid*radians_conv, np.asarray(path_above)*um_conv, 'C3')
plt.plot(path_theta_mid*radians_conv, np.asarray(path_below)*um_conv, 'C3')
plt.xlabel(r'$\Delta \theta$ (radians)')
plt.ylabel(r'$\Delta r$ ($\mathregular{\mu}$m)')
# plt.ylabel('PD')
# plt.xlabel(r'$\theta$ (radians)')
# x_label = [r"0", r"$\pi/\mathregular{2}$", r"$\pi$", r"$\mathregular{3}\pi/\mathregular{2}$", r"2$\pi$"]
# plt.xticks(np.array([0,0.5,1,1.5,2])*np.pi,x_label)
# plt.xlim(0, 2*np.pi)
mplhf.add_axes_label_inches(ax1, (0.068,0.065), 'a', color='white', fontsize=10)
mplhf.add_axes_label_inches(ax2, (0.068,0.065), 'b', color='k', fontsize=10, backgroundcolor='white')
plt.tight_layout(pad=0.1)
save_dir = "C:\Users\Scherer Lab E\Box Sync\Passing\Figures and Data\Figures"
del_r_del_theta_fig.savefig(save_dir+"\Fig_3.png", dpi=600)
save_dir = "C:\Users\Scherer Lab E\Box Sync\Passing\Figures and Data\Figures"
del_r_del_theta_fig.savefig(save_dir+"\Fig_3.pdf", dpi=800)
# From Ana_17050803
f = open("C:\Users\Scherer Lab E\Box Sync\Passing\Figures and Data\Data\pass_event_mean_path_grouped_Ls.pkl", mode='r')
mean_path_grouped_Ls = cPickle.load(f)
f.close()
# From Ana_17050803
f = open("C:\Users\Scherer Lab E\Box Sync\Passing\Figures and Data\Data\pass_event_mean_path.pkl", mode='r')
path_above, path_below, path_theta, pass_del_theta_pos_neg, pass_del_r_pos_neg = cPickle.load(f)
f.close()
from matplotlib.colors import LogNorm
um_conv = 6.5/60/2
radians_conv = np.pi/180.0
mean_traj_fig = plt.figure(figsize=(3.34646, 2.5))
L_labels = ['1,2', '3,4', '5']
colors = ['C0', 'C1', 'C2']
for num, data in enumerate(mean_path_grouped_Ls[:-1]):
print len(data)
path_above = data[0]
path_below = data[1]
path_theta = data[2]
theta_pos_neg = data[3]
r_pos_neg = data[4]
path_theta_mid = (path_theta[:-1] + path_theta[1:])/2
#prob_density, xedges, yedges, im2 = plt.hist2d(pd.concat(pass_del_theta_pos_neg)*radians_conv, pd.concat(pass_del_r_pos_neg)*um_conv, range=[[-.3491,.3491],[-1.0833,1.0833]], bins=50, norm=LogNorm(), rasterized=True)
plt.plot(path_theta_mid*radians_conv, np.asarray(path_above)*um_conv, colors[num], label='$l$='+str(L_labels[num]))
plt.plot(path_theta_mid*radians_conv, np.asarray(path_below)*um_conv, colors[num], label=None)
plt.xlabel(r'$\Delta \theta$ (radians)')
plt.ylabel(r'$\Delta r$ ($\mathregular{\mu}$m)')
plt.xlim(-0.15, 0.15)
plt.ylim(-0.6, 0.6)
plt.plot(pd.concat(pass_del_theta_pos_neg).values*radians_conv, pd.concat(pass_del_r_pos_neg).values*um_conv, 'ko', ms=0.5, alpha=0.07, zorder=0, rasterized=True)
ax_legend = plt.legend(loc='upper right', borderaxespad=0.1, handlelength=1, handletextpad=1)
# Make the legend rendered in Latex
ax_legend_text = ax_legend.get_texts()
for text_obj in ax_legend_text:
text_obj.set_usetex(True)
plt.tight_layout(pad=0.1)
save_dir = "C:\Users\Scherer Lab E\Box Sync\Passing\Figures and Data\Figures"
mean_traj_fig.savefig(save_dir+"\Fig_5.png", dpi=600)
save_dir = "C:\Users\Scherer Lab E\Box Sync\Passing\Figures and Data\Figures"
mean_traj_fig.savefig(save_dir+"\Fig_5.pdf", dpi=400)
# From Ana_17050702
f = open("C:\Users\Scherer Lab E\Box Sync\Passing\Figures and Data\Data\pass_events_per_sec_normed.pkl", mode='r')
Ls, normed_events_per_frame = cPickle.load(f)
f.close()
# From Ana_17050702
f = open("C:\Users\Scherer Lab E\Box Sync\Passing\Figures and Data\Data\pass_event_dwell_time.pkl", mode='r')
all_dwells = cPickle.load(f)
f.close()
pass_events_fig = plt.figure(figsize=(3.34646, 4))
events_per_sec = normed_events_per_frame * 110.0
# Cut out L=-5
events_per_sec = events_per_sec[Ls >= 0]
plot_Ls = Ls[Ls >= 0]
plot_events_per_sec = events_per_sec[events_per_sec < np.inf]
plot_Ls = plot_Ls[events_per_sec < np.inf]
# print events_per_sec
fit_func = lambda x, p0: x*p0
param, pcov = scipy.optimize.curve_fit(fit_func, plot_Ls, plot_events_per_sec)
ax2 = plt.subplot(212)
x_fit = np.linspace(0,5.1,100)
y_fit = fit_func(x_fit, param)
plt.plot(plot_Ls, plot_events_per_sec, 'o', ms=4)
plt.plot(x_fit, y_fit, 'k')
plt.ylabel('Event Rate ($\mathregular{sec}^{-1}$)')
plt.xlabel('Angular Number, $l$', usetex=True)
# Plot dwell times of passing for each L
single_exp = lambda x, p1,p2: p1*np.exp(-p2*x)
dwell_times = []
for idx in range(1,6):
data = all_dwells[idx]
# Histogram
bins = hnf.hist_bin_optimization(data)
hist, bins = np.histogram(data, bins=70)
mid_bins = (bins[:-1] + bins[1:])/2.0
d_t = 1 - np.cumsum(hist)/float(sum(hist))
params, cov = scipy.optimize.curve_fit(single_exp, mid_bins, d_t, p0=[0.5,0.0095], maxfev=2000)
fit_x = np.linspace(min(mid_bins)*0.90, max(mid_bins)*1.10, 300)
fit_y = [single_exp(xp, params[0], params[1]) for xp in fit_x]
dwell_times.append(params[1])
ax1 = plt.subplot(211)
dwell_times = np.asarray(dwell_times)
plt.plot(range(1,6), dwell_times*110.0, 'o')
plt.xlabel('Angular Number, $l$', usetex=True)
plt.ylabel('k($l$) (sec$^{-1}$)', usetex=True)
plt.ylim(0,7)
mplhf.add_axes_label_inches(ax1, (0.068,0.065), 'a', color='k', fontsize=10)
mplhf.add_axes_label_inches(ax2, (0.068,0.065), 'b', color='k', fontsize=10)
plt.tight_layout(pad=0.3, h_pad=0.1)
save_dir = "C:\Users\Scherer Lab E\Box Sync\Passing\Figures and Data\Figures"
pass_events_fig.savefig(save_dir+"\Fig_6.png", dpi=600)
save_dir = "C:\Users\Scherer Lab E\Box Sync\Passing\Figures and Data\Figures"
pass_events_fig.savefig(save_dir+"\Fig_6.pdf", dpi=800)
import cPickle
# From Ana_17050301
f = open("C:\Users\Scherer Lab E\Box Sync\Passing\Figures and Data\Data\optical_binding_potential.pkl", mode='r')
opt_bind = cPickle.load(f)
f.close()
def add_four_polar_coords(ax, size=None):
"""A helper function that adds 0pi, pi/2, pi, and 3pi/2 axis labels
on the inside of an axis following the unit circle.
:param ax: A mpl.axes object you want to add polar labels to
"""
if size == None:
size = 'medium'
# Add the polar labels
ax.text(0.955, 0.5, '$\mathbf{\mathregular{0}}$', fontdict=dict(color='white', size=size),
weight='extra bold', transform=ax.transAxes, va='center', ha='right')
ax.text(0.5, 0.97, '$\mathbf{\pi/\mathregular{2}}$', fontdict=dict(color='white', size=size),
weight='extra bold', transform=ax.transAxes, va='top', ha='center')
ax.text(0.045, 0.5, '$\mathbf{\pi}$', fontdict=dict(color='white', size=size),
weight='extra bold', transform=ax.transAxes, va='center', ha='left')
ax.text(0.5, 0.03, '$\mathbf{\mathregular{3}\pi/\mathregular{2}}$', fontdict=dict(color='white', size=size),
weight='extra bold', transform=ax.transAxes, va='bottom', ha='center')
# Change ticks in graph
xticklines = ax.get_xticklines()
yticklines = ax.get_yticklines()
xcenter = len(xticklines)/2
ycenter = len(yticklines)/2
xticklines[xcenter].set(color='white', markeredgewidth=2, markersize=5, zorder=0)
xticklines[xcenter-1].set(color='white', markeredgewidth=2, markersize=5)
yticklines[ycenter].set(color='white', markeredgewidth=2, markersize=5)
yticklines[ycenter-1].set(color='white', markeredgewidth=2, markersize=5)
from mpl_toolkits.axes_grid1 import make_axes_locatable
opt_bind_fig = plt.figure(figsize=(3.34646, 2.2))
# Need to divide the optical binding by 1000 to finish computing the average
true_opt_bind = opt_bind/1000
true_opt_bind = np.pad(true_opt_bind, (100,100), 'constant', constant_values=0)
len_opt_bind = len(opt_bind[:,0])
x = 11.42 * np.arange(len_opt_bind)/1000
x = x - x[len_opt_bind//2]
y = 11.42 * np.arange(len_opt_bind)/1000
y = y - y[len_opt_bind//2]
#plt.pcolormesh(x, y, opt_bind, cmap='viridis_r')
ax = plt.subplot()
im = plt.imshow(true_opt_bind, cmap='viridis_r', extent=[x[0], x[-1], y[0], y[-1]], rasterized=True)
plt.xlabel(r'x ($\mathregular{\mu}$m)')
plt.ylabel(r'y ($\mathregular{\mu}$m)')
divider = make_axes_locatable(ax)
cax = divider.append_axes("right", size="5%", pad=0.05)
cbar = plt.colorbar(im, cax=cax)
cbar.set_label(r'$\mathregular{k_B}$T')
add_four_polar_coords(ax)
plt.tight_layout(pad=0.1)
save_dir = "C:\Users\Scherer Lab E\Box Sync\Passing\Figures and Data\Figures"
opt_bind_fig.savefig(save_dir+"\Fig_4.png", dpi=600)
save_dir = "C:\Users\Scherer Lab E\Box Sync\Passing\Figures and Data\Figures"
opt_bind_fig.savefig(save_dir+"\Fig_4.pdf", dpi=800)